﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ProyectoAlmacen.Dominio;
using ProyectoAlmacen.Persistencia;
using System.ServiceModel.Web;
using System.Net;

namespace ProyectoAlmacen
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Materiales" en el código, en svc y en el archivo de configuración a la vez.
    public class Materiales : IMateriales
    {
        MaterialDAO materialDAO = new MaterialDAO();
  
        public Material Crear(Material materialACrear)
        {

            Material existe = Obtener(materialACrear.idMaterial.ToString());
            if (existe != null)
            {
                throw new WebFaultException<Error>(
                new Error()
                {
                    Mensaje = "Ha ingresado datos repetidos, por favor verifique."
                },
                HttpStatusCode.InternalServerError
                );
            }
            Material existeRepetido = materialDAO.BuscarRepetido(materialACrear.Descripcion);
            if (existeRepetido != null)
            {
                throw new WebFaultException<Error>(
                new Error()
                {
                    Mensaje = "La descripcion ingresada ya está siento utilizanda, por favor verifique."
                },
                HttpStatusCode.InternalServerError
                );
            }
            

            return materialDAO.Crear(materialACrear);
        }



        public Material Obtener(string idMaterial)
        {

            return materialDAO.Obtener(idMaterial);
        }
        public ICollection<Material> ListarTodos()
        {

            return materialDAO.ListarTodos();
        }
        public Material Modificar(Material materialAModificar)
        {

            Material existe = materialDAO.BuscarRepetido(materialAModificar.Descripcion);
            if (existe != null)
            {
                throw new WebFaultException<Error>(
                new Error()
                {
                    Mensaje = "La descripcion ingresada ya está siento utilizanda, por favor verifique."
                },
                HttpStatusCode.InternalServerError
                );
            }
            return materialDAO.Modificar(materialAModificar);
        }
        public void Eliminar(string idMaterial) 
        {
            materialDAO.Eliminar(idMaterial);
        }
    }
}
